package com.ruoyi.commodity.service;

import java.util.List;

import com.ruoyi.common.core.domain.TreeSelect;
import com.ruoyi.common.core.domain.Vendor;
import org.springframework.web.multipart.MultipartFile;

/**
 * 供应商管理Service接口
 * 
 * @author ruoyi
 * @date 2023-09-18
 */
public interface IVendorService 
{
    /**
     * 查询供应商管理
     * 
     * @param id 供应商管理主键
     * @return 供应商管理
     */
    public Vendor selectVendorById(Long id);

    /**
     * 查询供应商管理列表
     * 
     * @param vendor 供应商管理
     * @return 供应商管理集合
     */
    public List<Vendor> selectVendorList(Vendor vendor);

    /**
     * 新增供应商管理
     * 
     * @param vendor 供应商管理
     * @return 结果
     */
    public int insertVendor(Vendor vendor);

    /**
     * 修改供应商管理
     * 
     * @param vendor 供应商管理
     * @return 结果
     */
    public int updateVendor(Vendor vendor);

    /**
     * 批量删除供应商管理
     * 
     * @param ids 需要删除的供应商管理主键集合
     * @return 结果
     */
    public int deleteVendorByIds(Long[] ids);

    /**
     * 删除供应商管理信息
     * 
     * @param id 供应商管理主键
     * @return 结果
     */
    public int deleteVendorById(Long id);

    /**
     * 生成供应商编号10001递增
     * @return 结果
     */
    public String selectNumber();

    /**
     * 批量修改
     * @param vendorList 存储所以要修改的数据
     * @return 结果
     */
    public int batchUpdate(List<Vendor> vendorList);

    /**
     * 根据id查询所以的信息
     * @param ids 集合
     * @return 结果
     */
    public List<Vendor> selectVendorListById(Long[] ids);

    /**
     * 查询供应商树结构信息
     * @param vendor 供应商信息
     * @return 供应商树信息集合
     */
    public List<TreeSelect> selectVendorTreeList(Vendor vendor);

    /**
     * 构建前端所需要树结构
     *
     * @param vendorList 供应商列表
     * @return 树结构列表
     */
    public List<Vendor> buildVendorTree(List<Vendor> vendorList);

    /**
     * 构建前端所需要下拉树结构
     *
     * @param vendorList 供应商列表
     * @return 下拉树结构列表
     */
    public List<TreeSelect> buildVendorTreeSelect(List<Vendor> vendorList);
    /**
     * 导入供应商模版数据
     * @param file
     * @return
     */
    public int importVendorExcel(MultipartFile file);
}
